JasmineJS দিয়ে Test Cases (টেস্ট কেস) লিখা খুবই সহজ এবং কার্যকরী। JasmineJS এর টেস্ট কেসগুলো describe() এবং it() ফাংশন ব্যবহার করে লেখা হয়, যেখানে describe() টেস্টের গোষ্ঠী বা ফিচার বর্ণনা করে এবং it() নির্দিষ্ট টেস্ট কেসের মধ্যে আসল পরীক্ষাটি পরিচালনা করে। এখানে আমরা JasmineJS এ টেস্ট কেস লেখার মৌলিক পদ্ধতি এবং কয়েকটি উদাহরণ দেখাব।
Test Case লিখার মৌলিক কাঠামো
JasmineJS এ একটি টেস্ট কেসের সাধারণ কাঠামো হলো:
describe("Function/Feature Name", function() {
it("should perform a specific behavior", function() {
// এখানে টেস্ট কোড থাকবে
expect(actualValue).toBe(expectedValue);
});
});
এখানে:
describe(): এটি একটি ফিচার বা ফাংশনের টেস্ট গোষ্ঠী বর্ণনা করে।it(): এটি একটি নির্দিষ্ট টেস্ট কেসের বর্ণনা দেয়, যা একটি নির্দিষ্ট আচরণ বা ফলাফল পরীক্ষা করে।expect(): এটি একটি অ্যাসারশন তৈরি করে এবং পরীক্ষার ফলাফল যাচাই করে।
Test Case লেখার পদ্ধতি
- ফিচার বা ফাংশন বর্ণনা
প্রথমে আপনি যে ফাংশন বা ফিচার পরীক্ষা করবেন, সেটির নাম বা বর্ণনাdescribe()ব্লকে দেবেন। এটি সাধারণত একটি কোড ফিচার বা মডিউল হবে, যার কার্যকারিতা আপনি যাচাই করতে চান। - টেস্ট কেস নির্ধারণ
এরপরit()ব্লকে নির্দিষ্ট টেস্ট কেসটি লিখবেন। এটি বর্ণনা করবে আপনি কী যাচাই করতে চান, যেমন—একটি ফাংশন সঠিকভাবে কাজ করছে কিনা বা একটি ফলাফল প্রত্যাশিত কিনা। - টেস্ট কোড লেখুন
it()ব্লকের ভিতরে আপনি সেই কোডটি লিখবেন যা পরীক্ষিত হবে। এখানেexpect()ব্যবহার করে অ্যাসারশন করবেন, যেমন কী যাচাই করতে চান—ফাংশনটি সঠিকভাবে কাজ করছে কিনা বা কোনো ভ্যালু প্রত্যাশিত মানের সাথে মেলে কিনা।
উদাহরণ ১: দুইটি সংখ্যা যোগ করা
describe("sum function", function() {
it("should add two positive numbers correctly", function() {
const sum = 2 + 3;
expect(sum).toBe(5); // ২ এবং ৩ যোগ করলে ৫ হবে
});
});
এখানে:
describe()ব্লকটিsum functionএর টেস্ট গোষ্ঠী তৈরি করছে।it()ব্লকটি যাচাই করছে যে,2 + 3যোগ করলে ৫ হবে কিনা।expect()ব্লকটি যাচাই করছে যে,sumএর মান ৫ হতে হবে।
উদাহরণ ২: একটি অ্যারের মান পরীক্ষা করা
describe("Array operations", function() {
it("should contain a specific number", function() {
const numbers = [1, 2, 3, 4];
expect(numbers).toContain(3); // অ্যারেতে ৩ থাকতে হবে
});
});
এখানে:
describe()ব্লকটিArray operationsফিচারটি পরীক্ষা করছে।it()ব্লকটি যাচাই করছে যে,numbersঅ্যারেতে ৩ আছে কিনা।expect()ব্লকটি যাচাই করছে যেnumbersঅ্যারেতে3রয়েছে।
উদাহরণ ৩: একটি ফাংশনের ভুল ইনপুট চেক করা
describe("multiply function", function() {
it("should return NaN when multiplying by a string", function() {
const result = 2 * "hello";
expect(result).toBeNaN(); // গুনফল NaN (Not-a-Number) হওয়া উচিত
});
});
এখানে:
describe()ব্লকটিmultiply functionপরীক্ষা করছে।it()ব্লকটি যাচাই করছে যে, সংখ্যা এবং স্ট্রিং গুণ করলে ফলাফল NaN হবে।expect()ব্লকটি যাচাই করছে যে,resultNaN হতে হবে।
beforeEach() এবং afterEach() ব্যবহার
আপনি beforeEach() এবং afterEach() ফাংশন ব্যবহার করে টেস্ট কেসের আগে বা পরে কিছু কোড এক্সিকিউট করতে পারেন। এগুলো বিশেষভাবে উপকারী যখন একাধিক টেস্ট কেসের জন্য কমন সেটআপ বা টিয়ারডাউন করা প্রয়োজন হয়।
উদাহরণ:
describe("Calculator", function() {
let calc;
beforeEach(function() {
calc = new Calculator(); // প্রতিটি টেস্ট কেসের আগে Calculator তৈরি হবে
});
it("should add two numbers correctly", function() {
expect(calc.add(2, 3)).toBe(5);
});
it("should subtract numbers correctly", function() {
expect(calc.subtract(5, 3)).toBe(2);
});
afterEach(function() {
// টেস্ট কেসের পর যে কোনো পরিস্কার বা লোগিং কার্যক্রম
console.log("Test finished");
});
});
এখানে:
beforeEach(): প্রতিটি টেস্ট কেসের আগে নতুন একটিCalculatorইনস্ট্যান্স তৈরি হবে।afterEach(): প্রতিটি টেস্ট কেসের পরে একটি লগ মেসেজ দেখানো হবে।
বিশেষ টেস্ট অ্যাসারশন
JasmineJS এ বিভিন্ন ধরনের অ্যাসারশন ব্যবহার করা হয়, যেমন:
toBe(): সঠিক মান পরীক্ষা করে।toEqual(): অবজেক্ট বা অ্যারের মান পরীক্ষা করে।toContain(): অ্যারে বা স্ট্রিংয়ে কিছু উপস্থিত কিনা পরীক্ষা করে।toBeTruthy()/toBeFalsy(): মানটি সত্য বা মিথ্যা কিনা পরীক্ষা করে।toThrow(): একটি ফাংশন কোন ত্রুটি (error) ফেলে কিনা পরীক্ষা করে।
উদাহরণ:
describe("Error handling", function() {
it("should throw an error when dividing by zero", function() {
function divide() {
return 1 / 0;
}
expect(divide).toThrow(); // এই ফাংশনটি ত্রুটি (error) ফেলবে
});
});
সারাংশ
JasmineJS দিয়ে টেস্ট কেস লেখার পদ্ধতি খুবই সরল:
describe()ব্লকের মধ্যে ফিচার বা ফাংশনের নাম দিয়ে টেস্ট গোষ্ঠী তৈরি করা হয়।it()ব্লকের মধ্যে নির্দিষ্ট টেস্ট কেস লেখা হয়, যেখানে আপনি যে আচরণ বা ফলাফল পরীক্ষা করতে চান তা উল্লেখ করেন।expect()ফাংশনের মাধ্যমে অ্যাসারশন করা হয়, যা পরীক্ষার ফলাফল যাচাই করে।
Read more